package com.example.demo.util;

/**
 * @Author: zjq
 * @Date: create in 2023/4/27 15:49
 */
public class LngLonUtil {
    /**
     * 坐标转换，腾讯地图转换成百度地图坐标
     * @param latitude 腾讯纬度
     * @param longitude 腾讯经度
     * @return 返回结果：经度,纬度
     */
    public static String map_tx2bd(double longitude, double latitude){
        double bd_lat;
        double bd_lon;
        double x_pi=3.14159265358979324;
        double x = longitude, y = latitude;
        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
        bd_lon = z * Math.cos(theta) + 0.0065;
        bd_lat = z * Math.sin(theta) + 0.006;

        System.out.println("bd_lat:"+bd_lat);
        System.out.println("bd_lon:"+bd_lon);
        return bd_lon+","+bd_lat;
    }


    /**
     * 坐标转换，百度地图坐标转换成腾讯地图坐标
     * @param latitude  百度坐标纬度
     * @param longitude  百度坐标经度
     * @return 返回结果：纬度,经度
     */
    public static String map_bd2tx(double longitude, double latitude){
        double tx_lat;
        double tx_lon;
        double x_pi=3.14159265358979324;
        double x = longitude - 0.0065, y = latitude - 0.006;
        double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
        double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
        tx_lon = z * Math.cos(theta);
        tx_lat = z * Math.sin(theta);
        return tx_lat+","+tx_lon;
    }
    /**
     * 常用地图转换工具类（各个地图API采用的坐标系(WGS84坐标系：即地球坐标系，国际上通用的坐标系。谷歌地图用此坐标
     * 百度地图API                 百度坐标 (BD09坐标系：即百度坐标系，GCJ02坐标系经加密后的坐标系。
     * 腾讯搜搜地图API            火星坐标 (GCJ02坐标系：即火星坐标系，WGS84坐标系经加密后的坐标系。
     * 阿里云地图API             火星坐标 (GCJ02坐标系：即火星坐标系，WGS84坐标系经加密后的坐标系。
     * 高德MapABC地图API        火星坐标 (GCJ02坐标系：即火星坐标系，WGS84坐标系经加密后的坐标系。
     * @param args
     */
    public static void main(String[] args) {
        String s = map_bd2tx(112.523872, 37.862986);
        System.out.println(s);
    }
}
